import { ElMessage, ElNotification } from 'element-plus'

/** 消息类型列表 */
export type MessageType = 'error' | 'success' | 'warning' | 'info'

/**
 * @ClassName MessageUtil
 * @Description 消息工具类
 * @Author xuyizhuo
 * @Date 2024/12/15 19:57
 */
export default class MessageUtil {
    /**
     * 显示普通消息
     * @param {string} message
     * @param {MessageType} type
     */
    static message(message: string, type: MessageType = 'info') {
        // 关闭已有的消息框
        ElMessage.closeAll()
        // 弹出新的消息框
        ElMessage({
            message,
            type,
        } as any)
    }

    /**
     * 显示警告消息
     * @param {string} message
     */
    static messageWarning(message: string) {
        this.message(message, 'warning')
    }

    /**
     * 显示错误消息
     * @param {string} message
     */
    static messageError(message: string) {
        this.message(message, 'error')
    }

    /**
     * 显示普通通知
     * @param {string} message 通知消息
     * @param {string} title 通知标题
     * @param {MessageType} type  通知类型
     */
    static notification(message: string, title: string = '', type: MessageType = 'info') {
        // 关闭已有通知框
        ElNotification.closeAll()

        // 弹窗新的通知框
        ElNotification({
            title,
            message,
            type,
        } as any)
    }

    /**
     * 显示警告通知
     * @param {string} message 通知消息
     * @param {string} title 通知标题
     */
    static notificationWarning(message: string, title: string = '') {
        this.notification(message, title, 'warning')
    }

    /**
     * 显示错误通知
     * @param {string} message 通知消息
     * @param {string} title 通知标题
     */
    static notificationError(message: string, title: string = '') {
        this.notification(message, title, 'error')
    }
}
